#include<bits/stdc++.h>
using namespace std;
const long long MAXN=100007;
long long n,m,L,V,d[MAXN],v[MAXN],a[MAXN],p[MAXN],ans[MAXN];
bool check(long long ds,long long vs,long long as)
{
    if(vs<=V && as==0) return true;
    double cc=(V*V-vs*vs)/2.0*as;
    for(long long i=0;i<m;i++)
    {
        if(p[i]>=ds&&p[i]<cc)
        {
            return false;
        }
    }
    return true;
}
void solve()
{
    long long cnt=0;
    cin>>n>>m>>L>>V;
    long long fans=0;
    for(long long i=0;i<n;i++) cin>>d[i]>>v[i]>>a[i];
    for(long long i=0;i<m;i++)
    {
        cin>>p[i];
    }
    for(long long i=0;i<n;i++)
    {
        if(check(d[i],v[i],a[i])==false)
        {
            cnt+=1;
            ans[cnt]=i;
        }
    }
    cout<<cnt<<" ";
    for(long long i=0;i<m;i++)
    {
        bool flag=true;
        long long bottle=p[i];
        p[i]=NULL;
        for(long long j=1;j<=cnt;j++)
        {
            if(check(d[ans[j]],v[ans[j]],a[ans[j]])==true)
            {
                flag=false;
            }
        }
        if(flag==false)
        {
            p[i]=bottle;
        }
        else
        {
            fans+=1;
        }
    }
    cout<<fans-1<<endl;
}
int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    long long T;
    cin>>T;
    while(T--)
    {
        solve();
    }
    return 0;
}
